perm filename CANON.RAS[UP,DOC]8 blob sn#628753 filedate 1981-12-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00015 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	---- ImPrint-10 Printer system overview --- by RAS ----		12/7/81
C00012 00003	Preparing an IMP file from listings and TEX:
C00016 00004	CPrint: printing your IMP file 
C00021 00005	Fonts for the ImPrint-10
C00025 00006	MakImp: switches
C00031 00007	        extra information: font expansion, other switches, sources
C00034 00008	        text output and errors
C00040 00009	ImPress format, Read-IMP program
C00043 00010	                Overview
C00050 00011	ImPrint-10: starting the CPU
C00054 00012		    Console messages while printing
C00056 00013		    Starting the ImPrint-10 Printer
C00061 00014		    Diagrams
C00064 00015
C00069 ENDMK
C⊗;
---- ImPrint-10 Printer system overview --- by RAS ----		12/7/81

      Address questions, suggestions and bug sightings to RAS.  
   (including questions about MakImp, CPrint and Rst fonts, font
  conversion, using an ImPrint, supplies and quality of the output.)

OVERVIEW:
There is no such thing as a  Canon printer at Margaret Jacks Hall.  We  do
have its successor,  an ImPrint-10, manufactured  and `maintained' by  the
Imagen Corporation.   The  ImPrint-10  in our  basement  is  hereby  named
`Canon' to honor its ancestor.

The ImPrint-10 printer  system is  made up of  a Canon  LBP-10 printer,  a
printer controller board, an M68000  based micro, a serial line  connected
to a console terminal and  either a 9600 baud  serial line connected to  a
host or an  ethernet board with which printing requests are received.

The ImPrint-10 is a  stand-alone entity.  We  (at Sail) talk  to it via  a
9600 baud  terminal  port and  protocol.   The HeathKit  console  terminal
alongside  allows  direct  communication   with  the  ImPrint  micro   for
initialization, indecipherable status messages and debugging.

ImPrint software, inside the ImPrint CPU:
    ImPress Translater, Painter program
    Texto currently at Diablo- will be in ImPrint-10 someday
	currently can only be used from IAZ's account at Diablo
	    with output sent to the ImPrint in LTP's office

Sail software:
    PTex, to create DVI files from TEX files;
    MakImp, to translate DVI files and listings into IMP files;
    Troff→ImP, coming soon to a CPU near you;
    Scribe→ImP, is it coming?  Only its hairdresser knows for sure,
		there is currently a C version somewhere.
    CPrint, to send an IMP file to the ImPrint for printing.

Roughly, the procedure for using the ImPrint is:
    Prepare your ImP file, run PTex on a TEX file, then run MakImp;
    Make sure the ImPrint CPU is ready (page 11);
    Make sure the ImPrint printer is ready (page 13);
    Send your file to Canon with DO CPrint[can,sys] (page 4).

NOTES:
    There is no spooling process; only one person may print a file at a time.  
    There is currently no way to print listings, only TEX DVI output
    IF Canon SPEWS PAPER, PULL OUT THE PAPER TRAY and reinitialize (page 11).
    There are no headers or title pages yet, so any listings lying around
	are fair game for use as samples.
    Since there is no spooler, your printing is done WHILE YOU WAIT, so
	when it has started printing, instead of waiting, PICK UP YOUR OUTPUT.

But don't stop here, the details are vital.  Read on!


Preparing an IMP file from listings and TEX:

LISTINGS:
Create an IMP file from a listing with MakImp.   Simply "R MakImp" and you
will be prompted for the name of the input file.  

Currently we do not have many  fonts for listings.  The default is  CMSA10
at magnification 0.8 which gives 67 lines per page and 122 characters  per
line.  See the \f switch to choose your own font.


TEX Sources:
Compile  your  program in  MYFILE.TEX  with the Pascal version of TEX, PTEX:
  .R  PTex  (report  any problems to IAZ) 
  *\input myfile 
This will create a file MYFILE.DVI on your directory.

Make a  .IMP file  from your .DVI  file with  MakImp:
  .R  MakImp		(report any  problems to  RAS) 
and  to the  prompt, type  MYFILE (or MYFILE.dvi).

TEX FONTS:   
    There are two  types of font  files, TFM files  contain dimensions  of
characters in a device independent  format.  Rst files contain the  images
of the characters at a particular resolution and magnification as well  as
pertinent dimensions.

    PTex gets its font information from  TFM files in some directory;  the
default is [TEX,SYS].  Most fonts  currently have TFM there.  MakImp  only
uses  Rst  files.   The  default   directory  is  [Can,Sys].   Below   are
instructions on creating fonts.

    Both PTex  and MakImp  look for  a font  file first  on the  directory
specified in the TEX  declaration, then on the  default directory.  If  no
directory is specified in the declaration, your current directory is used.
(Does TEX try the default if the one you specify is incorrect?)

    If I have  my own special  TFM and Rst  files in my  FON directory,  a
proper TEX font definition is  thus "\font z=cmsy10[fon,ras]".  If I  wish
to use system fonts, I would say "\font z=cmsy10".  Note that there is  no
guarantee that the Rst font in  [Can,sys] actually corresponds to the  TFM
file in [Tex,sys].  A check-digit is written into both files, but not used.

    If a font  file is not  found, MakImp will  try substituting the  same
font unmagnified  and  if  this fails  it  will  give you  lots  of  error
messages.  Someday it will allow you to specify an alternative font.

    For more information on Rst fonts, see page 5.

CPrint: printing your IMP file 

    To print IMP (Impress) files, DO CPRINT[can,sys].  It will ask you for
the filename, on the end of which it will append the string `.IMP'.   Thus
you can  not  specify  a  directory, you  must  print  from  your  current
directory.

    If someone else is using Canon, you will be asked to wait.   Sometimes
this program never finished,  even though the printing  job is done.   You
might go downstairs  and, if  the Canon  is idle,  send a  message to  the
person using it.  You can  find out their user  name with the command  .PJ
tty57.  If you have to map to their  screen, to free up the line you  must
type <call> and then give the Monitor command FINISH.

    Currently, as the sending program runs, it dumps a horendous amount of
garbage on the screen (try ESC O on a Sail terminal to suppress output) as
well as into  a file IS.LOG.   You should, meanwhile,  hop downstairs  and
pick up your listing, checking Canon's error and supply lights.

Fonts for the ImPrint-10

Currently, only Rst fonts are used by programs that talk to the ImPrint-10,
namely MakImp and Texto.  At Sail, they are kept in the directory [can,sys],
and can be made by running a special version of metafont that resides there.

MAKING Rst FONTS:  
    Rst format is documented in Rst.inf[can,sys].  Rst source code as well
as an extra copy of the documentation is stored in the spindle file
RstSrc.spi[can,sys].

    You can make an Rst font file by running the copy of MetaFont that  is
in [Can,sys] using mode=5.  Make sure you use the CMBASE file in [can,sys]
too.  The surest way  to do this  is by connecting  to [can,sys] with  the
monitor command: ".al can,sys".

    Rst fonts  come in  different magnifications;  an Rst  font's name  is
NAME.R## where ##  is one  or two  digits that  specify the  magnification
times 10.  Thus cmr10  at twice magnification is  in a file cmr10.r20,  at
half magnification is called cmr10.r5.

    So, to make an Rst file on can,sys:
.al can,sys
.ru mf
*mode=5; input cmr10		% to make a font at magnification 1.0 or:
*mode=-5; mag=1.2; input cmr10	% to make a font at magnification 1.2

OTHER PROGRAMS:
    RdRst allows you to look at the  inside of an Rst file.  It sends  its
output either  to the  screen  or to  a  file.  Type  \?  to it  for  more
information.  RdRstI  is  similar,  but only  gives  information  on  each
character's dimensions.

    Soon, hopefully, RdRst's ascii output file will have a standard format 
that can be edited and there will be a MakRst program to convert it back
into an Rst file.

    Also, we'll want a program to convert FNT files into the standard ascii
format.

SAMPLE FONTS
    The programs MakSam and MakSsm make samples of Rst fonts.  They are not
quite upto date, but will be up soon.  MakSam is for text fonts, displaying
each character plus text.  MakSsm makes a smaller sample excluding the text.

MakImp: switches

MakImp excepts several switches.  After the file name, type "/"
    and any combination of the following:
(Note: currently there is no way to produce multiple copies)

P # # PAGE RANGE (default -100:250) eg "p1:2" or "p7"
    For DVI files, TEX page numbers are used.  Note that this means that
	if TEX never does a "\advcount0" call, every page is numbered 0.
    For listings, the first page in number 1, new pages begin with each
	form-feed character.

M #  Magnification (range 0.1-9.9); eg "m1.2"
    For DVI files, this magnifies the whole document by #.  Note that you
	can get into trouble by making the text larger than the page, in
	which case MakImp will complain endlessly and chop off the extra.
	If given, this mag will override the recommended mag given by TEX
	in the DVI file, ie the results of a TEX "\magnify 1200" statement.
    For listings, this will only magnify the font used to make the listing,
	so the text will not run off of the page.  Note that the default
	font is at mag 0.8 already.

Setting Margins.  The default margins put a one inch margin on the top and
    left of most TEX output and listings.  Examples show how to move margins
    an inch toward the center of the page.  Note that these are all absolute
    pixel coordinates.  On an ImPrint-10 there are 240 pixels per inch.
    It is currently physically impossible for the ImPrint to print outside of
    the given range.
← #   Left   Margin (default 262,  range 0-1982); eg "←402"
→ #   Right  Margin (default 1982, range 0-1982); eg "←1742"
↑ #   Top    Margin (default  130, range 0-2330); eg  "↑370"
→ #   Right  Margin (default 2330, range 0-2330); eg "↓2090"
    TEX assumes there will be a left margin and may write left of it by giving 
    negative x-coordinates.  MakImp will get violent if a TEX location is left
    of zero.  If this happens, look at the number MakImp tells you and recompile,
    increasing the margin to at least that absolute quantity.  And do not
    increase it so much that the page goes too far to the right!  

T # Type of input file, # is one of: "L","D","R", specifying that the type of
    input file is either a listing, a DVI file or an Rst file.  MakImp will
    look for a file of the specified type if you give one, otherwise, it will
    use the file extension to determine the type, an unknown extension meaning
    the file is a listing.  If the file has no extension, MakImp will look for
    a file with no extension, then try a few extensions it knows and infer the
    type of fiie accordingly.

The following two switches are for listings:
F s Font s, where s is a string (default CMSA10.R8); eg "CMSA10.R20"
    This font is used for printing listings.  Note that a font magnification
    times 10 (the .R8 extension means at 0.8 mag) is included in the font
    name.  If no extension is given, @1.0 is assumed.  And as noted above,
    this magnification is multiplied by the global file magnification to get
    the final font mag.
↔ # Spacing #, (default 1, range 1:4); eg "↔2" gives double spacing


MakImp will echo its parameters as it begins processing your file, eg:
    Input file name: big
	Found DVI source big.dvi
	M= 1.0  standard-paper  pp:-100→250  ←262 →1982 ↑=130 ↓2332

        extra information: font expansion, other switches, sources


Rst FONT FILE EXPANSION
Given an rst  file as input,  or a name  and the switch  "tR" MakImp  will
produce pictures of the font expanded.  The user will be prompted for  the
size of each  pixel and  which characters ze  wants to  be printed.   This
gives quick feedback to people creating small fonts where it is  important
to see individual pixels.  To view a magnified font, the extension must be
included in the file name.

OTHER SWITCHES
! The following swithes should not be used;
S s/l Size of paper- standard is 8.5x11 (the default), legal is 8x14.
    Currently, though, Canon can only print on 8.5x11 paper, so there's
	no reason to use this switch.  Even if it could take longer paper,
	the software can not print on it.

! The following is not well implemented, try not to use it;
I #   Input data space (default 2, range 2-6); the maximum
	number of 8k chunks of storage bytes available for input on a page.
	This depends on how much space is available in the ImPrint CPU,
	which is currently =55k.  The rest of the space is given to 
	glyph data.

! The following are not up to date;
B#    deBugging flags, default-none. "+" gives 1,2,4;  "-" gives 1-6;
	1-diagnostics  2-flow of control  3-verbose flow  4-debugging data
	5-verbose data 6-  7-deletepack info  8-addnewchar info
	9-draw chars on last page
	All output goes to terminal and .ERC file.
 
MakImp SOURCES
Sail sources for MakImp are contained in a spindle file MakImp.SPI[can,sys].
They are not upto date, 11/27/81- RAS.  If you need current versions and
they are not there, send mail to RAS.

The Pascal version of MakImp is currently not being worked on.  The earliest
it might appear is in January.




        text output and errors

READING MakImp TEXT OUTPUT:
With no debugging flags set, MakImp prints a little output as it runs, eg:
    [5.][4.][3.][2.][1.]
The number is the page number of  the current page, the period is  printed
when the page  has been parsed,  the "]"  when the ImPress  page has  been
output to the Imp file.

If any errors are encountered, a .ERC file is opened and all messags go to
that file as well as to the screen.

When any debugging flag has been set,  MakImp writes all output to a  .ERC
file and produces at least one line of output for every page, eg:
    [3⊂⊃⊂⊃.(c677)(ε91)(g13000 p9041)(p4312→1110)  totpage=0 (o)]

The first number is the  current page number according  to TEX.  A "⊂"  is
printed whenever a font file is opened  to be read; when it has been  read
in, the  "⊃" is  printed.  The  period signifies  that the  page has  been
parsed.

The "(c#)" tells how many glyph objects are on the page, "(ε#)" tells  the
number of different glyphs that are currently defined, "(g# p#)" tells how
much glyph data is needed total, and how much needed on the page.  If  the
number in "g#" is larger than  a certain amount (currently 48k), then  the
next field will appear.  "(pA→B)" means a pack was done, and the amount of
glyph data went from A to B.   TotPage is the total number of  description
bytes on the page.  Currently the number for the totpage is wrong.


USER ERRORS:
A user error  is that  which causes  an error  message.  It is most  often
caused by a missing font file or typesetting off of the page.  The  former
can presently only be  prevented by knowing which  fonts are in  [can,sys]
and generating any that are not there.   Both types of errors can be  most
easily caused by  exaggerated magnification.   Also, a  TEX error  message
telling of a box  that is grossly overfull  might cause a  "page-too-wide"
error.

MakImp ERRORS:
MakImp is a research  project of fluxuating  priority.  Bugs are  promptly
addressed, if  not  fixed, but  there  have  been no  efforts  to  perform
exhaustive testing.  Please report any bugs.  Sending your ERC file and  a
pointer to the original DVI file will help immeasurably.

The only crashing  error of which  I know,  occurs if there  are too  many
objects and  typesetting commands  on the  page.  Currently  20000  words,
80000 bytes are allocated to the command array, much more than the ImPrint
can handle and much more than appears on any reasonable page.  Because  of
the use of  Sail byte  pointers, bounds checking  is not  obvious and  not
done.  Overflowing this  array could cause  unpredictable errors...   This
will be fixed soon.

ImPress format, Read-IMP program

ImPress format is best  described in the  ImPress Manual.  Stanford  users
should send enquiries to RAS@Sail,  although few people need one.   Others
should contact their local Imagen representative.

Basically, ImPress files contain  the images of  characters to be  typeset
and a description of where to print each character or rule.  ImPress files
are byte oriented, on Sail 4 bytes are packed per word in the (left)  high
order bytes.


READING ImPress FILES- RdImp
RdImp translates ImPress files at Sail into ascii .IMR files.  The  format
is not quite like  the ascii format  in the manual which  I found hard  to
read.  In addition, search for "!!"'s in the text to find caught errors or
warnings.  Comments are enclosed in  parentheses.  Right before POPs,  and
NL commands, the current page coordinate is added as a comment.

To run RdImp, just type ".R RdImp" to Sail and you will be prompted for an
IMP file name.  Pictures of characters  are not included in the IMR  file.
To view these, add the switch "/c" to the file name and the images will be
sent to a .IMC file.


WRITING ImPress FILES
Currently, there  is  no  IMR→IMP  program, although  it  would  be  nice.
Someday it will be added as a MakImp input capability.


                Overview

This description is for people writing programs that will produce  ImPress
files.  It is meant only as  an overview, the ImPress manual contains  the
actual specification of the ImPress language.

The Imp language is quite stable, except for the addition of some graphics
commands.  The file format is also stable, except for the first few bytes
of the file.  An overview of the format of an IMP file at Sail follows.
This format is sent directly to our ImPrint.

<#>	    - an ascii decimal "1":"6", the number of 8k blocks to give to
	      the input data, the rest of 55k goes to character storage.
	      MakImp's default is "2", allowing plenty of room for fonts.
<string>    - any chars followed by a null, usually the file name.
"ImagImPr"  - NOT followed by a null.  

So, if "@" stands for the null character, the file WEAVE.IMP, made from  a
TEX DVI source would  start with the  string "2WEAVE.TEX@ImagImPr" in  the
first 19 bytes of the file, one character per byte.

Next come  the  pages.   Before  each page  come  character  deletion  and
definition commands.   These can  come in  the page,  but result  in  less
efficient operation of the ImPrint.

MakImp puts  character deletions  and definitions  BEFORE pages.   A  page
starts with a PAGE command contains typesetting commands and ends with  an
ENDPAGE command.   Typesetting commands  consist of  commands to  move  an
abstract cursor  and  to print  rules  (black rectangles)  and  predefined
characters at the cursor's position.

For an example of these commands, see the Sail source  ImpDef.sai[imp,ras]
for  the  command  codes  and  the  file  ImpFun.sai[imp,ras]  for  little
procedures that  output  the  commands-  they  will  tell  you  the  exact
parameters for each command.

The ImPrint has  finite space for  glyphs so you  may need to  tell it  to
delete some  between  pages.  MakImp  has  two space  counting  variables,
GLYPAGE knows how much glyph (char) space is used on a page, GLYDATA knows
how much is in the Imprint already AND on the page.

MakImp parses a page, sending the  typesetting commands to one buffer  and
the glyph defs to another.  As it eats the page, if glydata goes too high,
it stops defining new  chars, inserting blanks when  they are needed,  and
outputs an error message.

After the page  is parsed, things  are sent  to the IMP  file.  First,  if
glydata is too  high, all  chars not  used on  the page  are deleted  with
delete-char commands.  Then new  chars are sent to  the IMP file from  the
char buffer.   Then the  PAGE command  is output  followed by  all of  the
commands from the other buffer, then the ENDPAGE command.

When all the pages are  finished, the EOFile command  is given to the  IMP
file, which is now done.

In the character definition commands, the format of the bit map is exactly
that of the Rst font  file.  See Rst.sai[rst,ras], ImpFon.sai[imp,ras]  p4
and ImpFun.sai[imp,ras] p2 for examples of how a glyph definition  command
is given.  Currently, no font definition commands need to be given.

There are two types of fonts, resident and external and two types of
representations, raster and encoded.  Currently, all fonts used are 
external raster fonts.  Encoded fonts are not yet defined and might never
appear as external fonts.  

Characters of external fonts need no font definition command because the
character definition command associates an image with a particular character
of a font.  Resident fonts need a font definition, to know which font to
asociate with a particular font number.  They need no character definitions
because that information is resident.  For resident fonts, MakImp needs to 
know each character's printing width as well as how much memory each 
resident font requires (they are read from prom to main memory as needed).
Currently, there are no resident fonts and the width file format is yet to
be defined.  

	.......................................................


ImPrint-10: starting the CPU

The CPU has three states: Wait, Diagnostic monitor and 68k monitor.
Upon power-up, programs are read from PROM and Canon enters the Wait state.


WAIT STATE
This is the printing state.  The CPU is waiting for amy event, such as a
message from the serial line signalling a print request.  Thus turning on
the ImPrint puts it into the Wait state.

Typing the (Zenith)  console's BREAK  key will  force entry  into the  68k
monitor.  Typing any other character on the console will force entry  into
the Diagnostic Monitor.

DIAGNOSTIC MONITOR
This is used for software debugging.  Perhaps someday there'll be a 
pointer here to documentation about all the options...  For the moment, all
you have to know is that "Q <return>" quits the monitor, returning you to
the wait state.  And BREAK sends you to the 68k monitor.

68K MONITOR
The 68000 board comes with a small monitor for debugging, which, on Canon,
 can be activated by hitting the console's BREAK key.  Two commands are of
interest. "C <return>" causes program continuation and "Z <return>" causes
system initialization.

INITIALIZATION
To initialize the ImPrint-10, either power it up, with the on/off switch
on the back side of the card cage (on the right end), or press the console's
BREAK key and type "Z <return>".  It will enter wait state and be ready to
respond to print requests from Sail.

	    Console messages while printing

PRINTING MESSAGES
Upon beginning a print request, some information will appear about the
page size etc  -- TO BE CONTINUED --

ERROR MESSAGES
During printing,  Canon  sends  any  error messages  to  the  (Heath  Kit)
terminal.  Do not try to read them-  they are written in a South  American
dialect specially made to be scrolled off of the screen at high  velocity.
Some tanslations follow:

Object Area Overflow:  
    Too many instances of things are typeset on the page;

Invalid Glyph Dimensions:  
    Glyph's currently can not have zero height or width.

Undefined Glyph:  
    Printing a glyph that has not  been defined, or whose dimensions  were
invalide results in this error.

Something out of paper:		
    This is a euphemism for something being typeset OFF of the paper,  too
far to the right, left, too far up or down.


If you  think the  error  messages are  cryptic  and should  provide  more
information, that's  what I  thought,  too.  Much  later,  when we  get  a
spooler, intelligent  error  messages  will  be sent  back  to  the  print
requester...
	    Starting the ImPrint-10 Printer

Note: see next page for diagram of Canon's setup in the basement.

INITIALIZING THE PRINTER:  
    Turn on the printer using the large black plastic toggle on the front,
left side.  The green ready/wait light  will blink for a few seconds.   If
all of the lights are on, try waiting until the CPU is ready.  If the  CPU
IS ready, try turning it off and on again or panicking as outlined below.

BUTTONS:
    The Test/reset light does  not work.  But if  you push the  test/reset
button, you'll tell the CPU to print out pages of grid marks.  Plus you'll
get the message "Printing  Exercise Requested" on  the console.  Push  the
button again to disable it.  Soon it will be changed so that each press of
the button generates just  one exersize so you  won't have to worry  about
its state.

    The other two buttons are disabled.

ERROR CONDITIONS:  
    Documentation is in ImPrint's (red, spiral bound) notebook. Briefly...
When lit, the four lights (with  sketches above them) mean, from left  to
right: (the front of the printer is the side with the lights)

OUT OF PAPER: Either  the paper cassette is  installed incorrectly or  the
ImPrint needs more paper.  If the latter, remove the black paper tray from
the left side  of the  ImPrint (just pull  gently but  firmly).  Find  the
paper, NOTE (!)  carefully which side is up and add some paper face up  to
the tray.  Reinsert  the tray (put  it in approximately  the right  place,
push gently and the tray will be guided in).

NEEDS PREMIX:   Maybe the  ImPrint  needs more  premix.  Try  opening  and
closing the left front  panel.  If the light  persists it probably  really
needs it.  Find a bottle (a Canon bottle with a picture of a drop like the
picture above the  light, look  below the  ImPrint's table  and below  the
table near the door) and  shake it well.  Open  the middle panel and  pour
half of the bottle into the hole in the black tray that leads to the tank.

PAPER JAM: Some paper may be  caught in the ImPrint innards.  Try  opening
and closing the front left panel.  If this does not work, there may really
be some paper caught.  Remove it  carefully.  For help see pages 18-21  of
the "ImPrint LBP-10 Operation Manual".   Usually you can pull stuck  paper
out from where  it goes in  or where it  comes out.  You  can try  opening
things up,  but be  careful.  Remeber  to push  the red  reset lever  down
before closing the top left  lid. If you need help,  seek RAS, LTP or  LES
@Sail.

NEEDS TONER: if the little toner  bottle behind the front middel panel  is
empty, take it out (turn CCW `135 and pull it out), and replace it with  a
full one (probably below  the table) making sure  the toner is shaken  and
the black  valve is  on  the bottle  properly and  put  it back  into  the
ImPrint.  If it is not empty, the toner is clogging the valve, try turning
the bottle CW & CCW a few times.

	    Diagrams

			   top view:

							   CPU
___________						  on/off
|   |      |		------------------------------------/\---
| HeathKit |		|  Laser Printer   .            |       |
| (Zenith) |	--------+                  .            |       |
| Console  |	|       |                  .            |       |
| Terminal |	| paper |                  .            | CPU   |
|   |      |	|  tray |                  .            |  cage |
------------	|       |      top lid     .            |       |
		--------+                  .            |       |
			|                  .            |       |
			---\/----------------xxxxxxxxx-----------
			 printer     ↑        ↑ lights
			  on/off     |        |
				     |        |
				 side door   middle panel

	Note that only the location of the lights are shown 



	**************************************************

			and the insides:

				back
		------------------------------------/\---
		|                  .            |       |
	--------+!                 .            |       |
	|       |!                 .            |       |
	| paper |!          D  R  U. M       () | CPU   |
	|  tray |!                 .   INK   || |  cage |
	|       |!                 .   TRAY  || |       |
	--------+!                 .         || |       |
		|↑    X            .  O      -- |       |
	←left   -|-\/-↑---------------↑-------↑----------
		 |    |            Premix    Toner bottle
	       handle |		    hole
		      red reset lever